

package com.scs.application.modules.order.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.scs.application.core.model.DataEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * 采购订单实体对象
 *
 */
/**
 * 采购订单实体对象
 */
@TableName("purchase_order")
@Data
@EqualsAndHashCode(callSuper = false)
@ToString(callSuper = true)
@Accessors(chain = true)
public class PurchaseOrder extends DataEntity  implements Serializable {

    /**
     * 来源类型 sp 供应商平台手动创建的 scp 从scp系统传入的
     */
    private String fromType;

    /**
     * 院方ID
     */
    private String hospitalId;

    /**
     * 院方名称
     */
    private String hospitalName;

    /**
     * 订单编号
     */
    private String code;

    /**
     * 供应商ID
     */
    @NotBlank(message = "供应商ID不能为空")
    private String supplierId;

    /**
     * 供应商名称
     */
    @NotBlank(message = "供应商名称不能为空")
    @Length(min = 1, max = 100, message = "供应商名称长度必须介于 1 和 100 之间")
    private String supplierName;

    /**
     * 送达地点ID
     */
    private String warehouseId;

    /**
     * 送达地点名称
     */
    private String warehouseName;

    /**
     * 是否寄售
     */
    @NotNull(message = "是否寄售不能为空")
    private String isConsignment;

    /**
     * 是否一物一码
     */
    @NotNull(message = "是否一物一码不能为空")
    private String isOneThingOneYard;

    /**
     * 要求送达日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @NotNull(message = "要求送达日期不能为空")
    @JSONField(format = "yyyy-MM-dd")
    private java.util.Date gmtRequireLatestDelivery;

    /**
     * 订单金额(元)
     */
    private Double totalAmount;

    /**
     * 采购员
     */
    private String buyerName;

    /**
     * 审核人
     */
    private String auditorName;

    /**
     * 提交时间
     */
    private java.util.Date gmtSubmitted;

    /**
     * 审核时间
     */
    private java.util.Date gmtAudited;

    /**
     * 供应商确认状态
     */
    private Integer supplierConfirmStatus;

    /**
     * 供应商确认用户
     */
    private String supplierConfirmer;

    /**
     * 供应商确认时间
     */
    private java.util.Date gmtSupplierConfirmed;

    /**
     * 超时已通知次数
     */
    private Integer supplierTimeoutNoticedTimes;

    /**
     * 发货状态
     */
    private Integer deliveryStatus;

    /**
     * 首次发货时间
     */
    private java.util.Date gmtFirstDelivery;

    /**
     * 订单状态
     */
    private Integer status;

    /**
     * 是否关闭
     */
    private Integer isClosed;

    /**
     * 关闭原因
     */
    private String closedReason;

    /**
     * 关闭时间
     */
    private java.util.Date gmtClosed;

    /**
     * 数据来源
     */
    private Integer source;

    /**
     * 来源标识
     */
    private String sourceKey;

    /**
     * 备注
     */
    private String remark;

    /*发货金额*/
    @TableField(exist = false)
    private Double deliveryAmount;

    /**
     * spd院方关闭订单,关闭人
     */
    private String closeUser;

    /**
     * 需求科室Id
     */
    private String demandDeptId;

    /**
     * 需求科室Name
     */
    private String demandDeptName;

    /**
     * 采购科室Id
     */
    private String purchaseDeptId;

    /**
     * 采购科室Name
     */
    private String purchaseDeptName;

    /**
     * 采购日期
     */
    private Date purchaseDate;

    /**
     * 第三方采购平台供应商Id
     */
    private String thirdSupplierId;

    /**
     * 第三方采购平台科室Id
     */
    private String thirdDeptId;

    /**
     * 第三方订单Id
     */
    private String thirdOrderId;

    /**
     * 1：药品，2：耗材，3：试剂  4：跟台包 默认耗材
     **/
    private String materialTypeCode;

    private String packageName;
}
